package persistencia.hbt;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import bean.Cliente;
import bean.CondicionPago;
import bean.Cotizacion;
import bean.DescuentoPorCantidad;
import bean.Direccion;
import bean.Fabricante;
import bean.ItemCotizacion;
import bean.Factura;
import bean.ItemFactura;
import bean.ItemOrdenPedido;
import bean.ItemRemito;
import bean.ItemSolicitudCotizacion;
import bean.Localidad;
import bean.OficinaDeVenta;
import bean.OrdenCompra;
import bean.ItemOrdenCompra;
import bean.ListaPrecios;
import bean.ItemListaPrecios;
import bean.OrdenPedido;
import bean.Pais;
import bean.Parametros;
import bean.Producto;
import bean.ProductoEntregado;
import bean.ProductoRecibido;
import bean.Proveedor;
import bean.Provincia;
import bean.Remito;
import bean.RemitoCliente;
import bean.RemitoODV;
import bean.RemitoProveedor;
import bean.Rodamiento;
import bean.SolicitudCotizacion;

public class HibernateUtil
{
    private static final SessionFactory sessionFactory;
    
    private HibernateUtil() {}
    
    static
    {
        try
        {
        	 AnnotationConfiguration config = new AnnotationConfiguration();
        
        	 config.addAnnotatedClass(Cliente.class);
        	 config.addAnnotatedClass(CondicionPago.class);
        	 config.addAnnotatedClass(Cotizacion.class);
        	 config.addAnnotatedClass(DescuentoPorCantidad.class);
        	 config.addAnnotatedClass(Direccion.class);
        	 config.addAnnotatedClass(Fabricante.class);
        	 config.addAnnotatedClass(Factura.class);
        	 config.addAnnotatedClass(ItemCotizacion.class);
        	 config.addAnnotatedClass(ItemFactura.class);
        	 config.addAnnotatedClass(ItemListaPrecios.class);    
        	 config.addAnnotatedClass(ItemOrdenCompra.class);
        	 config.addAnnotatedClass(ItemOrdenPedido.class);
        	 config.addAnnotatedClass(ItemRemito.class);
        	 config.addAnnotatedClass(ItemSolicitudCotizacion.class);
        	 config.addAnnotatedClass(ListaPrecios.class); 
        	 config.addAnnotatedClass(Localidad.class);
        	 config.addAnnotatedClass(OficinaDeVenta.class); 
        	 config.addAnnotatedClass(OrdenCompra.class);
        	 config.addAnnotatedClass(OrdenPedido.class);
        	 config.addAnnotatedClass(Pais.class);
        	 config.addAnnotatedClass(Producto.class);
        	 config.addAnnotatedClass(ProductoEntregado.class);
        	 config.addAnnotatedClass(ProductoRecibido.class);
        	 config.addAnnotatedClass(Proveedor.class);
        	 config.addAnnotatedClass(Provincia.class);
        	 config.addAnnotatedClass(Remito.class);
        	 config.addAnnotatedClass(RemitoCliente.class);
        	 config.addAnnotatedClass(RemitoODV.class);
        	 config.addAnnotatedClass(RemitoProveedor.class);
        	 config.addAnnotatedClass(Rodamiento.class);
        	 config.addAnnotatedClass(SolicitudCotizacion.class);
        	 config.addAnnotatedClass(Parametros.class);
 
             sessionFactory = config.buildSessionFactory();
        }
        catch (Throwable ex)
        {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
 
    public static Session getSession() throws HibernateException {
    	return sessionFactory.openSession();
    }
 
    public static SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }
    
}
